package com.color.admin.common.core.utils.tools;

import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.List;

/**
 * @author HaiQiu
 * @date 2021/12/24
 */
@SuppressWarnings({"unchecked","all"})
public class FieldUtils {

    /**
     * 反射获取对象字段值
     * @param clazz 类
     * @param fields 成员
     * @return
     */
    public static List<Field> getAllFields(Class clazz, List<Field> fields) {
        if (clazz != null) {
            //clazz.getFields()获得某个类的所有的公共（public）的字段，包括父类中的字段。将字段转成数组存储到fields集合
            fields.addAll(Arrays.asList(clazz.getFields()));
            //clazz.getSuperclass()返回类表示此Class所表示的实体(类，接口，基本类型或void)的超类。
            getAllFields(clazz.getSuperclass(), fields);
        }
        return fields;
    }
}
